package test;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;

/**
 * @author oldliu
 * @since 1.0
 */
public class DGuoshengri {
    public static void main(String[] args) {
        //输入生日（月-日):计算距离下个生日还有几天（注意2-29的处理）
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
        df.setLenient(false);
        Scanner in = new Scanner(System.in);
        System.out.println("请输入生日：");
        String str = in.next();
        //要不要加上年
        Calendar c = Calendar.getInstance();
        Calendar c2 = Calendar.getInstance();
        int nian = c.get(Calendar.YEAR);
        String b = nian + "-" + str;
        int count = 0;
        while (count <= 8) {


            try {
                Date d = df.parse(b);
                c2.setTime(d);//c2没有小时分钟秒 2022-4-26 0：0：0
                c2.add(Calendar.DAY_OF_YEAR, 1);
                c2.add(Calendar.SECOND, -1);//2022-4-26 23：59：59
                System.out.println(c2.getTime());
                //加一天。。。
                //或者设置一下小时分钟秒
                //比较c2和c1谁大。。。
                if (c.compareTo(c2) > 0) {//大于0，说明c小，今年还没有到
                    c2.add(Calendar.YEAR, 1);
                }
                int days = (int) ((c2.getTimeInMillis() - c.getTimeInMillis()) / 1000 / 3600 / 24);
                System.out.println("距离下次生日还有" + days + "天");
                break;
            } catch (ParseException e) {
                //e.printStackTrace();
                count++;
                b = (++nian) + "-" + str;
            }
        }
        if(count>=8){
            System.out.println("日期“"+str+"”是非法");
        }
    }
}
